#ifndef MAPCONTROLLER_H
#define MAPCONTROLLER_H

#include <e32std.h>
#include <e32base.h>

class CMapController : public CBase
	{
public:
	~CMapController();
	CMapController();

public:
	static CMapController& GetInstance();
	
public:
	static CMapController* 	instance;

public:
    /**
     * 设置地图中心点
     * @param point
     */
    void SetCenter(const MPoint& point);

    /**
     * 设置地图的缩放级别。 这个值的取值范围是[3,13]。
     * @param zoomLevel - 缩放级别，取值范围是[3,18]
     * @return 新的缩放级别，取值范围[3,18]
     */
    int SetZoom(int zoomLevel);
    
    void AnimateTo(const MPoint& point);
    
    /**
     * 按照给定的像素数据量滚动
     * @param x - 水平滚动的像素数
     * @param y - 垂直滚动的像素数
     */
    void ScrollBy(int x,int y);

    void StopAnimation(TBool b);
	
    /**
     * 放大一个级别
     * @return - 如果缩放成功，返回true，如果达到最大极限，返回false。 
     */
    TBool ZoomIn();

    /**
     * 放大一个级别
     * 这个放大会平移地图使之保持在屏幕的一个固定点上。通过像素坐标来设定固定点
     * @param xPixel - 地图左边固定点缩放的偏移量。 
     * @param yPixel - 地图上方固定点缩放的偏移量。 
     * @return 如果放大成功，返回true；如果达到最大极限，返回false
     */
    TBool ZoomInFixing(int xPixel, int yPixel);
    
    /**
     * 缩小一个级别
     * @return - 如果成功缩小返回true，如果达到最小极限，则返回false
     */
    TBool ZoomOut();

    /**
     * 缩小一个级别
     * 这个缩放也将把地图平移到屏幕的一个固定点上。通过像素坐标来设定固定点
     * @param xPixel - 地图左边固定点缩放的偏移量。 
     * @param yPixel - 地图上方固定点缩放的偏移量。 
     * @return 如果缩放成功，返回true；如果达到最小极限，返回false。 
     */
    TBool ZoomOutFixing(int xPixel, int yPixel); 
    
    /**
     * 打开我的位置定位功能
     */
    void EnableMyLocation();

    /**
     * 打开指南针
     */
    void EnableCompass();

    /**
     * 设置启用内置的缩放控件
     * @param flag
     */
    void SetBuiltInZoomControls(TBool flag);
	};

#endif 
